AR Clip SDK
Делайте AR-проекты в Unity, которые открываются в AR Clip как App Clip. Ваш WebGL-контент подгружается по сети, а локализацией занимаются ARKit и AR Clip VPS.
Что нужно
- Unity 2020 LTS или новее (проверено на 2021+)
- Платформа сборки WebGL
- Доступ к загрузчику архивов AR Clip
Проверяйте на телефоне
В Unity Editor большинство API AR Clip обёрнуто в Application.isEditor. Чтобы проверить
настоящее отслеживание, соберите проект под WebGL и откройте его в мобильном приложении AR Clip.
Установка пакета
- Откройте Window → Package Manager.
- Нажмите + → Add package from Git URL….
- Вставьте
https://github.com/WebAR-Studio/arclip_sdk.gitи подтвердите.
Перед импортом удалите старую папку Assets/ARLib, если она есть. Иначе появятся ошибки о
дублирующихся символах, например такая:
error CS0433: The type 'ARLibTester' exists in both 'ARLib' and 'Assembly-CSharp'
Импорт примеров
В Package Manager → AR Clip → Samples:
- Импортируйте WebGLTemplates и скопируйте созданную папку в корень
Assets/. После этого шаблон появится в Project Settings → Player → WebGL Template. - Импортируйте TransparentBackground и перенесите
TransparentBackground.jslibвAssets/Plugins. Так у WebGL будет прозрачный фон.
Настройка сцены
- Добавьте пустой GameObject с именем
ARClipController. - Добавьте на него
ARLibControllerи укажите камеру в полеrenderCamera. - Выключите компонент Camera на этом GameObject. Задайте Clear Flags = Solid Color и фон RGBA(0,0,0,0).
- Необязательно: чтобы имитировать нативные колбэки в редакторе, добавьте
ARLibTester(из Samples).
Минимальный скрипт запуска
using UnityEngine;
using ARLib;
public class ARClipBootstrap : MonoBehaviour
{
[SerializeField] private Camera renderCamera;
private void OnEnable()
{
ARLibController.Initialized += HandleInitialized;
ARLibController.VPSPositionUpdated += HandleVpsPose;
}
private void OnDisable()
{
ARLibController.Initialized -= HandleInitialized;
ARLibController.VPSPositionUpdated -= HandleVpsPose;
}
private void Start()
{
ARLibController.SetRenderCamera(renderCamera);
ARLibController.Initialize();
}
private void HandleInitialized()
{
ARLibController.EnableCamera();
ARLibController.EnableAR();
ARLibController.EnableSurfaceTracking("horizontal");
}
private void HandleVpsPose(VPSPoseData pose)
{
Debug.Log($"VPS pose: {pose.Position}");
}
}
Запуск VPS-локализации
Настройте VPS после инициализации и до запуска локализации:
var settings = new VPSSettings
{
apiKey = "your-api-key",
locationIds = new[] { "your-location-id" }
};
ARLibController.SetupVPS(settings);
ARLibController.StartVPS();
Подпишитесь на события:
ARLibController.VPSInitialized— VPS готов к работе.ARLibController.VPSPositionUpdated— новая поза после локализации.ARLibController.OnVPSErrorHappened— ошибка, в виде строки.
Чтобы настроить, как часто отправляются запросы в конкретной локации, используйте
SetSendPhotoDelay, SetGpsAccuracyBarrier и SetFirstRequestDelay.
Отслеживание изображений и поверхностей
- Зарегистрируйте изображения через
AddTrackingImageдо того, как включите отслеживание. ДождитесьTrackedImagesArrayUpdate— это подтверждение, что они загрузились. - Чтобы находить плоскости, вызовите
EnableSurfaceTracking("horizontal" | "vertical" | "both"). Результаты приходят черезSurfaceTrackingUpdated.
Сборка и загрузка
- Выберите шаблон WebGL. В Project Settings → Player → WebGL → Resolution and Presentation выберите шаблон, который вы скопировали из пакета.
- Соберите проект. File → Build Settings → WebGL → Build.
- Упакуйте в zip. Сожмите сборку так, чтобы
index.htmlлежал в корне архива. - Загрузите. Загрузите архив через загрузчик архивов.
- Проверьте. Отсканируйте полученный QR-код в приложении AR Clip для iOS.
Решение проблем
- В WebGL нет изображения с камеры. Проверьте, что
TransparentBackground.jslibлежит вAssets/Plugins, а камера рендеринга и назначена, и выключена. - В режиме Play в редакторе нет AR-событий. Так и должно быть. Используйте
ARLibTesterили соберите под WebGL, чтобы получить настоящие данные. - Ошибки о дублирующихся символах. Убедитесь, что удалили старую папку
ARLibперед импортом пакета.